package elementosEvolutivos;

public abstract class Cromosoma implements Cloneable , Comparable<Cromosoma> {
	
	//protected Collection fenotipo;
	protected double evaluacion;
	protected double aptitud;
	protected double puntuacion;
	protected double punt_acum;
	
	
//	public void setFenotipo(Collection fenotipo) {
//		this.fenotipo = fenotipo;
//	}
	
	public void setEvaluacion(double eval) {
		this.evaluacion = eval;
	}

	public void setAptitud(double aptitud) {
		this.aptitud = aptitud;
	}

	public void setPuntuacion(double puntuacion) {
		this.puntuacion = puntuacion;
	}

	public void setPunt_acum(double punt_acum) {
		this.punt_acum = punt_acum;
	}

//	public Collection getFenotipo() {
//		return fenotipo;
//	}
	
	public double getEvaluacion() {
		return evaluacion;
	}
	
	public double getAptitud() {
		return aptitud;
	}
	
	public double getPuntuacion() {
		return puntuacion;
	}
	
	public double getPunt_acum() {
		return punt_acum;
	}
	
	public abstract Cromosoma clone();
	
	//public abstract Collection fenotipo();
	
	public abstract void inicializar();
	
	//public abstract Cromosoma[] cruce(Cromosoma cr);
	
	//public abstract boolean mutacion(double pm);
	
	public String toString(){
		String res="";
//		String res="FENOTIPO:\n";
//		for(int i=0; i<fenotipo.size();i++)
//			res+= "Gen"+i+": "+fenotipo.toString() +"\n";
		res+= "EVALUACION:\n"+evaluacion+"\n";
		res+= "APTITUD:\n"+aptitud+"\n";
		res+= "PUNTUACION:\n"+puntuacion+"\n";
		res+= "PUNTUACION ACUMULADA:\n"+punt_acum+"\n";
		return res;	
	}
	
	public int compareTo(Cromosoma cr){
		if(this.aptitud < cr.aptitud)
			return 1;
		else if(this.aptitud > cr.aptitud)
			return -1;
		else
			return 0;
	}
}
